feat: autostart system tray - #38
Merged
Merged
Conversation
added 18 commits
February 6, 2026 08:14
- Add tauri-plugin-autostart for launch at startup - Implement close-to-tray behavior with window event handler - Add startup settings commands (get/update) - Create Switch UI component - Add Settings UI for auto-launch, start minimized, and close-to-tray - Support --hidden flag for background startup Note: Has compilation error in mcpmux-core to be fixed after merge
Resolved conflicts: - Combined autostart and updater plugins in lib.rs - Merged startup settings UI with existing UpdateChecker in SettingsPage.tsx
- Fix ServerDefinition initialization with missing v2.1 fields - Add HostingType import to config.rs - Remove incorrect async/await from autostart plugin calls - Remove unused error import
- Simplify tray menu to only: Active Space, Open, Quit - Remove unsupported features: export config, refresh servers, create space - Fix Switch component to use correct CSS variables (--primary) - Add comprehensive test coverage for startup settings - Update tray documentation This addresses user feedback about cluttered tray menu and non-working UI elements.
- Add console logging throughout Switch component and settings page - Improve error handling with proper state rollback - Extract handleClick to separate function for better debugging - Add step-by-step logging to trace toggle behavior - Clean up unused imports in tray.rs This will help diagnose why toggles appear non-functional.
…lity - Check current auto-launch state before calling enable/disable - Only modify OS auto-launch setting when the value actually changes - Add proper flex layout with gap-4 and min-w-0 to prevent switch overflow - Add flex-shrink-0 to icons and switches to prevent compression - This fixes 'file not found' errors and missing switches in UI
- Replace bg-surface-secondary with bg-gray-300 (light) / bg-gray-600 (dark) - Add visible borders (gray-400/gray-500) to unchecked state - Ensures switches are always visible regardless of theme - Checked state remains with primary color and transparent border
- Add image crate dependency for PNG decoding - Load 32x32.png explicitly for system tray instead of using default - Convert PNG to RGBA format required by Tauri - This ensures proper tray icon rendering on Windows Note: For best results across all themes, consider creating a dedicated monochrome tray icon (dark icon on transparent background)
- Add 8 Rust unit tests for StartupSettings struct - Add 12 React unit tests for Switch component - Add 13 E2E tests for startup settings functionality All unit tests passing (Rust 8/8, React 12/12) E2E tests: 21/39 passed (failures expected in web-only mode)
- Create settings-desktop.wdio.ts for Tauri-specific tests - Remove desktop tests from settings.spec.ts (Playwright web-only) - Desktop tests require Tauri backend (auto-start, system tray) - Web tests remain for UI/layout verification only This fixes E2E test failures in web mode by properly separating desktop integration tests from web-only UI tests.
- Create pre-commit hook that validates before each commit - Runs cargo check for Rust files - Runs pnpm typecheck for TypeScript files - Auto-formats Rust code with cargo fmt - Add validate script: pnpm validate - Add prepare script to set hook permissions - Document git hooks setup in .github/GIT_HOOKS.md This prevents CI failures by catching issues locally.
- Add cargo clippy to pre-commit hook and validate script - Fix derivable_impls warning in HostingType enum - Update documentation to reflect clippy check - Update both bash and PowerShell hook versions This ensures clippy warnings are caught before commit, matching CI requirements.
- Add lint check to both bash and PowerShell hooks - Update validate script to include lint - Update documentation to reflect lint check Now pre-commit validation fully matches CI requirements: cargo fmt, clippy, check, lint, typecheck
- Remove dead_code attribute from update_tray_spaces function - Add AppHandle parameter to create_space and delete_space commands - Call update_tray_spaces after space creation, deletion, and activation - Add refresh_tray_menu command for manual tray refresh The system tray now automatically reflects: - New spaces when created - Space removal when deleted - Active space indicator when switching spaces Fixes issue where creating a new space didn't appear in system tray.
- Add comments explaining tray updates only happen after successful operations - Add success logging for create_space, delete_space, and set_active_space - Clarify that active space checkmark (\u2713) is updated in tray - Fix ownership issue by cloning space name before move Improves code maintainability and debugging visibility.
…o workflows - Skip update checker tests in web mode (require Tauri invoke API) - Skip logs path test in web mode (requires Tauri invoke API) - Add TAURI_SIGNING_PRIVATE_KEY_PASSWORD to CI, e2e-desktop, and nightly workflows Fixes 3 failing web E2E tests that were trying to call desktop-only Tauri commands. These tests are properly covered in desktop E2E tests (settings-desktop.wdio.ts).
Exclude AppImage from build targets to prevent linuxdeploy failures in CI environments. AppImage bundling requires complex FUSE setup that can be unreliable in GitHub Actions runners. Continue providing .deb and .rpm packages which are more commonly used for Linux distribution. Also add libfuse2 dependency for future AppImage support if needed.
its-mash
force-pushed
the
feature/autostart-system-tray
branch
from
February 6, 2026 06:36
44836ca to
754d48d
Compare
added 3 commits
February 6, 2026 14:42
Use Tauri CLI --bundles flag to explicitly exclude AppImage from Linux builds. AppImage bundling requires linuxdeploy and FUSE which can be unreliable in CI environments. The .deb and .rpm packages provide better Linux distribution support. Also added libfuse2 dependency for future AppImage support if needed.
its-mash
added a commit
that referenced
this pull request
Feb 6, 2026
Co-authored-by: Mohammod Al Amin Ashik <alamin.ashik@sitecore.com>
This was referenced Feb 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.